package models

// ==================== 用户角色常量 ====================

const (
	// RoleUser 普通用户角色
	RoleUser = "user"
	// RoleModerator 版主角色
	RoleModerator = "moderator"
	// RoleAdmin 管理员角色
	RoleAdmin = "admin"
)

// ValidRoles 所有有效的用户角色
var ValidRoles = []string{
	RoleUser,
	RoleModerator,
	RoleAdmin,
}

// RoleDescriptions 角色描述映射
var RoleDescriptions = map[string]RoleDescription{
	RoleUser: {
		Value:       RoleUser,
		Label:       "普通用户",
		Description: "基础用户权限",
	},
	RoleModerator: {
		Value:       RoleModerator,
		Label:       "版主",
		Description: "部分管理权限",
	},
	RoleAdmin: {
		Value:       RoleAdmin,
		Label:       "管理员",
		Description: "完整管理权限",
	},
}

// RoleDescription 角色描述结构
type RoleDescription struct {
	Value       string `json:"value"`
	Label       string `json:"label"`
	Description string `json:"description"`
}

// ==================== 用户状态常量 ====================

const (
	// StatusActive 正常状态
	StatusActive = "active"
	// StatusBanned 被封禁状态
	StatusBanned = "banned"
	// StatusDeleted 已删除状态
	StatusDeleted = "deleted"
)

// ValidStatuses 所有有效的用户状态（可操作的状态，不包括deleted）
var ValidStatuses = []string{
	StatusActive,
	StatusBanned,
}

// AllStatuses 所有用户状态（包括deleted）
var AllStatuses = []string{
	StatusActive,
	StatusBanned,
	StatusDeleted,
}

// ==================== 辅助函数 ====================

// IsValidRole 验证角色是否有效
func IsValidRole(role string) bool {
	for _, r := range ValidRoles {
		if role == r {
			return true
		}
	}
	return false
}

// IsValidStatus 验证状态是否有效
func IsValidStatus(status string) bool {
	for _, s := range ValidStatuses {
		if status == s {
			return true
		}
	}
	return false
}

// GetRoleDescriptions 获取所有角色描述
func GetRoleDescriptions() []RoleDescription {
	descriptions := make([]RoleDescription, 0, len(ValidRoles))
	for _, role := range ValidRoles {
		if desc, ok := RoleDescriptions[role]; ok {
			descriptions = append(descriptions, desc)
		}
	}
	return descriptions
}
